//
//  NSString+MD5.m
//  MD5加密
//
//  Created by 刘银龙 on 2017/3/22.
//  Copyright © 2017年 Ditian. All rights reserved.
//

#import "NSString+MD5.h"
#import <CommonCrypto/CommonCrypto.h>
@implementation NSString (MD5)

-(NSString *)stringToMD5:(NSString *)str{
    
    //1.首先将字符串转换成UTF-8编码，因为MD5加密是基于C语言的，所以要把字符串转换成C语言的字符串
    const char *fooData = [str UTF8String];
    //2.然后创建一个字符串数组，接收MD5的值
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    //3.计算MD5的值，这是一个官方封装好的加密方法；把我们输入的字符串转换成16进制的32位数，然后存储到result中
    CC_MD5(fooData,(CC_LONG)strlen(fooData),result);
    
    /**
     第一个参数：要加密的字符串
     第二个参数：获取要加密字符串的长度
     第三个参数：接受结果的数组
     */
    //4.创建一个字符串保存加密结果
    NSMutableString *saveResult=[NSMutableString string];
    //5.从result数组中获取加密结果并放到saveResult中
    for (int i=0; i<CC_MD5_DIGEST_LENGTH; i++) {
        [saveResult appendFormat:@"%02x",result[i]];
        
        
    }
    /*
     x表示十六进制，%02x 意思是不足两位将用0补齐，如果多余两位则不影响
     NSLog(@"%02X",0x888); //888
     NSLog(@"%02X",0x4);  //04
     */
    
    
    return saveResult;
}




@end
